package com.zqh.common.utils;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Currency;
import java.util.Date;
import java.util.GregorianCalendar;

/**
 * 日期处理
 *
 * @author wangzheng
 * @email wangzheng19851019@163.com
 * @url www.sungohealth.com
 * @date 2017年8月8日 下午12:02:46
 */
public class DateUtils {
	
	/** 时间格式(yyyy-MM-dd) */
	public final static String DATE_PATTERN = "yyyy-MM-dd";

	/** 时间格式(yyyy/MM/dd) */
	public final static String DATE_PATTERN_SLASH = "yyyy/MM/dd";
	
	/** 时间格式(yyyy-MM-dd HH:mm:ss) */
	public final static String DATE_TIME_PATTERN = "yyyy-MM-dd HH:mm:ss";
	
	/** 时间格式(yyyy年M月dd日 ah:mm:ss) 代码生成器使用 */
	public final static String DATE_TIME_CHN_PATTERN = "yyyy年M月dd日 ah:mm:ss";

	/** 基数 日期为：2018-08-13 00:00:00 **/
	public final static Integer cardinal = 1534089600;

	public static String format(Date date) {
		return format(date, DATE_PATTERN);
	}

	public static String format(Date date, String pattern) {
		if (date != null) {
			SimpleDateFormat df = new SimpleDateFormat(pattern);
			return df.format(date);
		}
		return null;
	}

	/**
	 * 获得当前几天前日期
	 * @return 字符串格式的年月日
	 */
	public static String getTenDate(int day){
		Date date = new Date();  //当前时间
		Calendar calendar = Calendar.getInstance();  //日历对象
		calendar.setTime(date);
		calendar.add(calendar.DATE,day);
		SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
		return simpleDateFormat.format(calendar.getTime());
	}

	/**
	 * 得到某一天日期
	 * @return
	 */
	public static Date getDateday(int day) throws ParseException {
		Calendar cal = Calendar.getInstance();
		cal.add(Calendar.DATE,day);
		DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
		String nowdayTime = dateFormat.format(cal.getTime());
		Date nowDate = dateFormat.parse(nowdayTime);
		return nowDate;
	}

	/**
	 * 获取昨天晚上凌晨的时间搓
	 * @return
	 * @throws ParseException
	 */
	public static int getYesTime() throws ParseException {
		SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
		Date date = simpleDateFormat.parse(getTenDate(0));
		return (int)(date.getTime()/1000);
	}

	/**
	 *
	 * @return
	 * @throws ParseException
	 */
	public static int getSingleOrDouble() throws ParseException {
		System.out.print(getYesTime()+" - "+cardinal+")/(24*3600))%2");
		return  ((getYesTime() - cardinal)/(24*3600))%2;  //现在时间距离2018-08-13的天数除以2取模
	}

	/**
	 * 获得明天日期
	 * @param date
	 * @return
	 */
	public static Date getTomorrow(Date date){
		Calendar calendar = new GregorianCalendar();
		calendar.setTime(date);
		calendar.add(calendar.DATE,+1);
		return calendar.getTime();
	}
	
}
